package com.wut.clock.service;

import com.wut.clock.common.api.CommonPage;
import com.wut.clock.dto.admin.UserParams;
import com.wut.clock.entity.SysUser;
import com.wut.clock.vo.admin.LoginVo;
import com.wut.clock.vo.admin.UserInfoVo;

import java.util.List;


/**
 * @author ZYH
 * @unit D9Lab
 * @description 用户接口
 * @date 2022/5/29 16:57
 */
public interface IUserService {

    /**
     * 新增一个用户
     * @param userParams 用户参数
     * @return 1：新增成功 0：新增失败
     */
    int insertOneUser(UserParams userParams);

    /**
     * 更新一个用户
     * @param userParams 用户参数
     * @return 1：新增成功 0：新增失败
     */
    int updateOneUser(UserParams userParams);

    /**
     * 查询用户列表
     * @param username 用户名
     * @param nickName 用户昵称
     * @param email 邮箱
     * @param phone 电话
     * @param pageNum 页码
     * @param pageSize 页尺寸
     * @return 用户列表
     */
    List<SysUser> getUserList(String username, String nickName, String email, String phone, Integer pageNum, Integer pageSize);

    /**
     * 发送注册邮件
     * @param type 类型
     * @param email 邮箱
     * @return true:发送成功 false:发送失败
     */
    boolean sendRegisterMail(String type, String email);

    /**
     * 用户注册
     * @param username 用户名
     * @param password 密码
     * @param confirmPassword 确认密码
     * @param email 邮箱
     * @param code 验证码
     * @return >0:注册成功 else:注册失败
     */
    int registerUser(String username, String password, String confirmPassword, String email, String code);

    /**
     * 忘记密码
     * @param email 邮箱
     * @param code 验证码
     * @param password 密码
     * @param confirmPassword 确认密码
     * @return >0 修改成功 else:修改失败
     */
    int forgetPassword(String email, String code, String password, String confirmPassword);

    /**
     * 登录
     * @param username 用户名
     * @param password 密码
     * @return 登录信息
     */
    LoginVo login(String username, String password);

    /**
     * 分配角色给用户
     * @param userId 用户id
     * @param roleId 角色id
     * @return int
     */
    int assignRole2User(Integer userId, Integer roleId);

    /**
     * 删除用户
     * @param userId 用户id
     * @return >0成功
     */
    int deleteOneUser(Integer userId);

    /**
     * 获取用户信息
     * @return 用户信息Vo
     */
    UserInfoVo getUserInfo();
}
